/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BO;

import java.util.Vector;

/**
 *
 * @author olivierm
 */
public class ListeClient {

    //*******************************************************************
    //Variables
    //*******************************************************************
    
    private static ListeClient instance;    
    private Vector<ClientPhysique> _listeClientPhysique;
    private Vector<ClientMoral> _listeClientMoral;
    
    //*******************************************************************
    //Constructeurs
    //*******************************************************************

    private ListeClient(){
        this._listeClientPhysique = new Vector<ClientPhysique>();
        this._listeClientMoral = new Vector<ClientMoral>();
    }    
    
    /**
    * Methodes pour le singleton
    */
        
    public static ListeClient getInstance(){
        if(instance == null) {
            instance = new ListeClient();
        }
        return instance;
    }    

    //*******************************************************************
    //MÃ©thode d'instance
    //*******************************************************************
    
    public synchronized boolean ajoutClientP(ClientPhysique cltP){
        if (cltP != null){
            this._listeClientPhysique.add(cltP);
            return true;
        }
        return false;
    }
    
    public synchronized boolean supprimerClientP(ClientPhysique cltP){
        if (cltP != null){
            this._listeClientPhysique.remove(cltP);
            return true;
        }
        return false;        
    }

    public synchronized ClientPhysique rechercherClientPnumeroClient(int numeroClient){
        if((numeroClient >0)){
            for(int i = 0; i < this._listeClientPhysique.size(); i++){
                ClientPhysique cltP = (ClientPhysique) this._listeClientPhysique.get(i);
                if ((cltP.get_numeroClient())== numeroClient)
                    return cltP;
            }
        }
        return null;
    }    
    
    public synchronized ClientPhysique rechercherClientP(String nom, String prenom){
        if((nom != null)||(prenom != null)){
            for(int i = 0; i < this._listeClientPhysique.size(); i++){
                ClientPhysique cltP = (ClientPhysique) this._listeClientPhysique.get(i);
                //TODO //if ((cltP.get_numeroClient()))
            }
        }
        return null;
    }
    
    public synchronized boolean ajoutClientM(ClientMoral cltM){
        if (cltM != null){
            this._listeClientMoral.add(cltM);
            return true;
        }
        return false;
    }
    
    public synchronized boolean supprimerClientM(ClientMoral cltM){
        if (cltM != null){
            this._listeClientMoral.remove(cltM);
            return true;
        }
        return false;        
    }

    public synchronized ClientMoral rechercherClientMnumeroClient(int numeroClient){
        if((numeroClient >0)){
            for(int i = 0; i < this._listeClientMoral.size(); i++){
                ClientMoral cltM = (ClientMoral) this._listeClientMoral.get(i);
                if ((cltM.get_numeroClient())== numeroClient)
                    return cltM;
            }
        }
        return null;
    }    
    
    public synchronized ClientMoral rechercherClientM(String nom, String prenom){
        if((nom != null)||(prenom != null)){
            for(int i = 0; i < this._listeClientMoral.size(); i++){
                ClientMoral cltM = (ClientMoral) this._listeClientMoral.get(i);
                //TODO //if ((cltP.get_numeroClient()))
            }
        }
        return null;
    }

    //*******************************************************************
    //MÃ©thode de classe
    //*******************************************************************    
    
    public boolean modifierClientPhysique(ClientPhysique clientPhysique){
            for(int i = 0; i < this._listeClientPhysique.size(); i++){
                ClientPhysique cltP = (ClientPhysique) this._listeClientPhysique.get(i);
                if ((cltP.get_numeroClient())== clientPhysique.get_numeroClient()){
                    this._listeClientPhysique.remove(i);
                    this._listeClientPhysique.add(clientPhysique);
                    return true;                    
                }
        }
        return false;
    }
}
